'use client'; import { useEffect, useState } from 'react'; import { notFound } from 'next/navigation'; import DynamicPageRenderer from '../components/dynamicPage/DynamicPageRenderer'; import { DynamicPageData } from '@/graphql/queries/getDynamicPageBySlug'; interface ClientDynamicPageProps { slug: string; } export default function ClientDynamicPage({ slug }: ClientDynamicPageProps) { const [pageData, setPageData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [isMissing, setIsMissing] = useState(false); useEffect(() => { async function fetchPageData() { try { const response = await fetch(`/api/dynamic-page/${slug}`); if (!response.ok) { if (response.status === 404) { setIsMissing(true); return; } throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); setPageData(data); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to load page'); } finally { setLoading(false); } } fetchPageData(); }, [slug]); if (isMissing) { notFound(); } if (loading) { return (

Loading page...

); } if (error) { return (

Error Loading Page

{error}

); } if (!pageData) { notFound(); return null; } return (
); }